"""
  * 自定义转换器格式
    * 1.定义类,继承自BaseConverter
    * 2.重写init方法,接收两个参数
    * 3.初始化父类成员变量, 还有子类自己的规则
    * 4.将转换器类,添加到系统默认的转换器列表中
需求：接收3位整数
"""""

from flask import Flask
from werkzeug.routing import BaseConverter
app =Flask(__name__)

# *1.定义类, 继承自BaseConverter
class MyRegexConverter(BaseConverter):
    # regex = "\d{3}" # 直接指定规则不够灵活，具体怎么匹配交给路由
    # *2.重写init方法, 接收两个参数
    def __init__(self,map,regex):
        # *3.初始化父类成员变量, 还有子类自己的规则
        super(MyRegexConverter,self).__init__(map) # 创建父类空间，并初始化
        self.regex = regex # 初始化子类

# *4.将转换器类, 添加到系统默认的转换器列表中
app.url_map.converters["re"] = MyRegexConverter # init 中map

print(app.url_map.converters)
# 匹配三位整数
@app.route('/<re("\d{3}"):number>') # re(规则) 传递了两个参数：1.app.url_map 2.括号中写的正则 init中regex
def hello(number):
    return "the number is %s"%number
# 匹配四位整数
@app.route('/<re("\d{4}"):number>')
def hello2(number):
    return "the number is %s"%number

# 匹配手机号
@app.route('/<re("1[3-9]\d{9}"):phone>')
def get_phone_number(phone):
    return "the phone number is %s"%phone

if __name__ == '__main__':
    app.run(debug=True)